<?php
/**
 * Widget 无刷新上传
 * mail:	mejinke@gmail.com
 * date:	2010-6-20
 */
function ajaxupload(Array $options = array())
{
	//HTML上传控件名称
    $fileName	=	isset($options['inputName'])	?	$options['inputName']	:	'upload_input'	;
	//允许上传大小
	$maxlimit	=	isset($options['maxSize'])	?	$options['maxSize']	:	'2000000'	; //1000000 =1M
	//保存目录
	$folder	=	isset($options['path'])	?	$options['path']	:	null	;
	//允许后缀
	$ext_array	=	isset($options['ext'])	?	$options['ext']	:	array('jpg','jpeg','gif','png','bmp')	;
	//显要显示的控件名称
	$return_input = isset($options['return_input'])	?	$options['return_input']	:	null	;
	//返回的图片名称是否带目录
	$return_path = isset($options['return_path'])	?	$options['return_path']	:	false	;
	$return_json =   isset($options['return_json'])	?	$options['return_json']	:	false	;
	//缩略图
	$resizeimage	 =	 isset($options['resizeimage'])	?	$options['resizeimage']	:	false	;
	//缩略图大小
	$maxwidth = isset($options['width'])	?	$options['width']	:	0;
	$maxheight = isset($options['height'])	?	$options['height']	:	0;
	if(!is_array($maxwidth))
	{
		$maxwidth=array($maxwidth);
		$maxheight=array($maxheight);
	}
	

	
	$return_array = array();
	//缩略图背景
	isset($options['R'])	?	$R=$options['R']	:	$R=255;
	isset($options['G'])	?	$G=$options['G']	:	$G=255;
	isset($options['B'])	?	$B=$options['B']	:	$B=255;

    $filesize = $_FILES[$fileName]['size'];

   	if(@is_uploaded_file($_FILES[$fileName]['tmp_name']))
	{
		$file	 =	$_FILES[$fileName];
		$name	=	$file['name'];
		$temp_name	 =	 $file['tmp_name'];
		$size	=	$file['size'];
		$_SESSION['UPLOAD_FILE_SIZE']=sprintf('%.3f',$size/1000000).'MB';
		if($size>$maxlimit)
		{
			if ($return_json){
				return array('size'=>'error');
			}else
				echo '文件大小超出限制：'.sprintf('%.3f',$size/1000000).'MB';
			
		}
		$ext=strrpos($name,".",0);
		$ext=substr($name,$ext+1);

		if(in_array(strtolower($ext),$ext_array))
		{
			$datetime=date('YmdHis').rand();
			$newname=$datetime.".".$ext; 
			Files::mkdirs(BASE_DIR.$folder.'/');
			//上传图片
			move_uploaded_file($temp_name,BASE_DIR.$folder.'/'.$newname);
			//检查是否需要保存缩略图
			
			if($resizeimage)
			{
				$image = Functions::import('$.class.Image');
				for($i=0;$i<count($maxwidth);$i++)
				{//批量生成不同大小的缩略图
					$image->resizeImage(array('file'=>BASE_DIR.$folder.'/'.$newname,'width'=>$maxwidth[$i],'height'=>$maxheight[$i],'R'=>$R,'G'=>$G,'B'=>$B,'dir'=>BASE_DIR.$folder));
				}
			}

			

		$newname=$folder.'/'.$newname;
		$file_dir = $newname;
		if (Config::get('root_path')!='')
			$newname = '/'.Config::get('root_path').$newname;
		else 
			$newname = '/'.$newname;
		if($return_json){
		$r = getimagesize(BASE_DIR.$file_dir);
				$rs=array(
					'src'=>$newname,
					'w'=>$r[0],
					'h'=>$r[1]
			);
			return $rs;
		}else{
			if(!empty($return_input))
				echo '<script>window.parent.document.'.$return_input.'.value="'.$newname.'";</script>';
			echo 'Upload Success!';
		}

			
		}
		else
		{	
			echo 'Document type is not correct：'.$ext;
		}
	}
	

}
?>